package com.zhonglz.designPattern.chain;

import java.util.LinkedList;

/***
 * 责任链过滤器的实现
 * @author zhonglz
 *
 */
public class FilterChainImpl implements FilterChain{
	
	// 定义过滤实例集合
	LinkedList<Filter> listfilter = new LinkedList<Filter>();
	public void append(Filter filter){
		listfilter.add(filter);
	}
	
	@Override
	public void execute() {
	   // 判断实例是否加载完成
	   if(hasNextFilter())
		   //加载实例
		   nextFilter().doFilter(this);
	   else{
		  System.out.println("执行目标方法");
	   }
	}
	public boolean hasNextFilter(){
		return listfilter.size() > 0;
	}
	// 下一个执行实例
	public Filter nextFilter(){
		// 集合中 pop()方法：用于从LinkedList表示的堆栈中删除并返回顶部元素。该方法只是弹出出现在堆栈顶部的元素
		return listfilter.pop();
	}
}